Xây dựng trên bộ nhớ ngoài Cây_hậu_tố

Bộ nhớ cây hậu tố đòi hỏi nhanh chóng vượt quá dung lượng bộ nhớ trong của máy tính thông thường khi độ dài các xâu đạt đến cỡ gigabyte. Khi đó, cần sử dụng các thuật toán cho bộ nhớ ngoài để xây dựng cây.

Có nhiều kết quả lý thuyết cho việc xây dựng cây hậu tố trong bộ nhớ ngoài. Thuật toán của Farach-Colton et al.[10]là tối ưu về mặt lý thuyết, với độ phức tạp I/O bằng với sắp xếp.Tuy nhiên, như đánh giá trong [11]thuật toán này là quá phức tạp nên vẫn chưa được sử dụng trong thực tế.

Mặt khác, đã có những nghiên cứu thực tế cho việc xây dựng cây hậu tố trên đĩa với tốc độ (một vài) GB/giờ.Các phương pháp tốt nhất hiện nay là TDD,[12]TRELLIS,[13]DiGeST,[14]vàB2ST.[15]

TDD và TRELLIS chạy được cho tới kích thước của bộ gen người – khoảng 3 GB – tạo ra cây hậu tố kích thước khoảng vài chục gigabyte.[12][13] Tuy nhiên các phương pháp này chưa thể chạy được cho các dữ liệu lớn hơn 3GB.[14] DiGeST chạy nhanh hơn hẳn trong trường hợp này và xử lý xong dữ liệu 6GB trong 6 giờ.[14] Có thể tìm mã nguồn và tài liệu của DiGeST ở [16].Tất cả các phương pháp này là cho việc xây dựng cây hậu tố khi kích thước cây vượt quá kích thước bộ nhớ trong nhưng dữ liệu vào vẫn nằm ở bộ nhớ trong.Phương pháp mới nhất, B2ST,[15] có thể xử lý được dữ liệu vượt ngoài kích thước bộ nhớ trong. ERA[17] là một phương pháp xây dựng cây hậu tố song song mới nhanh hơn hẳn các phương pháp cũ. ERA có thể xử lý bộ gen người trong 19 phút trên một máy tính để bàn 8 nhân với 16GB RAM. Trên một cụm gồm 16 máy tính Linux (mỗi máy 4GB RAM), ERA có thể xử lý bộ gen người trong 9 phút.

Tài liệu tham khảo

WikiPedia: Cây_hậu_tố http://webhome.cs.uvic.ca/~mgbarsky/DIGEST_SEARCH http://code.google.com/p/patl/ http://www.zbh.uni-hamburg.de/staff/kurtz/papers/G... http://hkn.eecs.berkeley.edu/~dyoo/python/suffix_t... http://www.cs.rutgers.edu/~farach/pubs/Suffix.pdf http://www.cs.ucdavis.edu/~gusfield/strmat.html http://www.cise.ufl.edu/~sahni/dsaaj/enrich/c16/su... http://www.cs.helsinki.fi/group/suds/ http://www.cs.helsinki.fi/u/ukkonen/SuffixT1withFi... http://www.nist.gov/dads/HTML/suffixtree.html